package edu.qqilin.springframework.context.support;

import edu.qqilin.springframework.beans.BeansException;

/**
 * Description: 面向用户的最终成品。
 * <p>
 * 核心功能：
 * <p>
 * 这是用户直接 new 的类。
 * <p>
 * 用户在构造函数中传入 classpath:spring.xml 路径。
 * <p>
 * 它把路径传给父类，父类再一层层调用上去，最终完成容器启动。
 * @author qqilin1213
 * @version 1.0
 * @date 2025/11/24 20:43
 */
public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext{

    private String[] configLocations;

    public ClassPathXmlApplicationContext() {
    }

    /**
     * 面向用户的最终成品
     * <p>
     * 从 XML 中加载 BeanDefinition，并刷新上下文
     *  <p>
     * 核心功能：
     *  <p>
     * 这是用户直接 new 的类。
     *  <p>
     * 用户在构造函数中传入 classpath:spring.xml 路径。
     *  <p>
     * 它把路径传给父类，父类再一层层调用上去，最终完成容器启动。
     * @param configLocations
     * @throws BeansException
     */
    public ClassPathXmlApplicationContext(String configLocations) throws BeansException {
        this(new String[]{configLocations});
    }

    public ClassPathXmlApplicationContext(String[] configLocations) {
        this.configLocations = configLocations;
        refresh();
    }

    @Override
    protected String[] getConfigLocations() {
        return configLocations;
    }
}
